#!/usr/bin/env node
//告诉操作系统执行命令的时候，帮我用node去执行--实际就是隐士的去执行node---test-cli xxxx

import { program } from 'commander'
import fs from 'node:fs'
// import path from 'node:path'
import inquirer from 'inquirer'//导入命令行交互工具
import { checkPath, downloadTmp } from './utils.js'
// const packagePath = path.join(, '../package.json')//获取当前执行命令的路径
// let json = fs.readFileSync(packagePath, 'utf-8')
// json = JSON.parse(json)//将字符串转换为对象
let json = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'))//获取当前执行命令的路径

program.version(json.version, '-v', '输出版本')

//输出问候语
program
  .command('hello')
  .alias('o')//别名
  .description('输出问候语')//描述信息
  .action(() => {
    console.log('恭喜你，使用了我的命令行工具');
  })

//创建其他命令
program.command('create <projectName>').alias('c').description('创建项目文件夹').action((projectName) => {
  inquirer.prompt([
    {
      type: 'input',//用户输入类型
      name: 'projectName',//返回的key值--也就是上面<projectName>变量名称
      message: '请输入项目名称',//描述信息
      default: projectName//默认值
    },
    {
      type: 'confirm',
      name: 'isTs',
      message: '是否选用typeScript模版'
    }
  ]).then(res => {
    if (checkPath(res.projectName)) {
      console.log('文件夹已经存在');
      return
    }
    if (res.isTs) {
      downloadTmp('ts', res.projectName)
    } else {
      downloadTmp('js', res.projectName)
    }
  })
})
// console.log(process.argv);
program.parse(process.argv)